package day5.day5_1;

import java.io.*;
import java.util.Calendar;
import java.util.Scanner;

public class _1 {
    public static void main(String[] args) throws IOException {
        Scanner input = new Scanner(System.in);
        _1 x = new _1();
//        x.c();

        //    输入一个目录，求这个目录占用的空间大小（递归）
//        System.out.print("输入目录名:");
//        System.out.println(x.b(new File(input.next())));

        /*4:获得文件行数的方法
 有bufferedReader.readLine 方法 或者查找byte是否=='\n',比较谁快！*/
        x.dd();


        /*7：一个模板文件wuliu. template的内容如下：
您的运单号为{danhao}的快件已到达{weizhi},请根据提取码{tiquma}提取，感谢您的支持
请把上面{}内的内容（包括{})替换为具体的信息，将替换后的内容写入到 《物流.txt》中*/
//        while (true){
//            System.out.println("输入end退出");
//            System.out.print("单号:");
//            String a=input.next();
//            System.out.print("位置:");
//            String a1=input.next();
//            System.out.print("提取码:");
//            String a2=input.next();
//            x.ss(a,a1,a2);
//            if(a.equals("end")){
//                return;
//            }
//        }
//        x.d();
    }


    //把1-10000内所有的质数写入文件，十个一行，每个用空格隔开
    public void a() throws IOException {
//        DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("C:\\Users\\董\\Documents\\java笔记\\大王\\测试.TXT"));
        FileWriter fileWriter = new FileWriter("C:\\Users\\董\\Documents\\java笔记\\新建文本文档.TXT");
        int j, x = 0;
        for (int i = 1; i <= 10000; i++) {
            for (j = 2; j <= 10000; j++) {
                if (i % j == 0) {
                    break;
                }
            }
            if (i == j) {
                x++;
                fileWriter.write(i + " ");
                if (x % 10 == 0) {
                    fileWriter.write("\r\n");
                }
            }
        }
        fileWriter.close();
    }


    //    输入一个目录，求这个目录占用的空间大小（递归）
    public long b(File file) {
        if (file.exists()) {
            if (file.isFile()) {
                File[] fa = file.listFiles();
                long x = 0;
                for (int i = 0; i < fa.length; i++) {
                    x = x + fa[i].length();
                }
                return x;
            } else {
                return file.length();
            }
        } else {
            System.out.println("没有这个文件");
        }
        return 0;
    }


    /*2：附件 chaoxian.txt是个文本文件，用程序把其中的金正恩替换成 金三胖，
提示：把内容取出来，替换后，写入文件。*/
    public void c() throws IOException {
        FileReader reader = new FileReader("C:\\Users\\董\\Documents\\java笔记\\2.TXT");
        StringBuffer st = new StringBuffer();
        char[] l = new char[60];
        int leng = 0;
        while ((leng = reader.read(l)) != -1) {
            String s = new String(l, 0, leng);
            st.append(s);
        }
        System.out.println("前:" + st);
        String s = st.toString();
        String a = s.replace("金三胖", "金正恩");
        System.out.println("后:" + a);
        FileWriter fileWriter = new FileWriter("C:\\Users\\董\\Documents\\java笔记\\2.TXT");
        fileWriter.write(a);
        fileWriter.close();
        reader.close();
    }

    /*3：实现文件加密解密：加密规则是读出每一个字节，取反(~)后，写入
新文件，然后删除原文件，把新文件改成原文件同名的文件，
解密规则类似。输入一个文件名，实现加密和解密功能*/
    public void d() throws IOException{
        File file = new File("C:\\Users\\董\\Documents\\java笔记\\d.TXT");
        FileInputStream fileInputStream = new FileInputStream("C:\\Users\\董\\Documents\\java笔记\\d.TXT");
        byte[] ar=new byte[1024];
        int length=0;
        String s=null;
        while ((length=fileInputStream.read(ar))!=-1){
             s= new String(ar, 0, length);
        }
        StringBuffer sb = new StringBuffer(s);
        sb.reverse();
        file.delete();//删除
        File file1 = new File("C:\\Users\\董\\Documents\\java笔记\\d.TXT");
        if (!file1.exists()){ //判断是否存在,不存在就创建文件
            file1.createNewFile();
        }
        FileWriter fileWriter = new FileWriter("C:\\Users\\董\\Documents\\java笔记\\d.TXT");
        String ss=sb.toString();
        fileWriter.write(ss);//写入
        fileInputStream.close();
        fileWriter.close();
    }

/*4:获得文件行数的方法
 有bufferedReader.readLine 方法 或者查找byte是否=='\n',比较谁快！*/
  public void dd()throws IOException{
      Calendar instance = Calendar.getInstance();
      long x=instance.getTimeInMillis();
      System.out.println(x);
      BufferedReader buff = new BufferedReader(new FileReader("C:\\Users\\董\\Documents\\java笔记\\www.TXT"));
      int a=1;
      while (buff.ready()){
          System.out.println(buff.readLine()+" "+a);
          a++;
      }
      Calendar instance1 = Calendar.getInstance();
      long xx= instance1.getTimeInMillis();
      System.out.println(xx);
      System.out.println("用时:"+(xx-x));
      BufferedInputStream bi  = new BufferedInputStream(new FileInputStream("C:\\Users\\董\\Documents\\java笔记\\www.TXT"));

      long x1=instance.getTimeInMillis();
      FileInputStream fis = new FileInputStream("C:\\Users\\董\\Documents\\java笔记\\www.TXT");
      BufferedInputStream bfs = new BufferedInputStream(fis);
      byte[] ar=new byte[fis.read()];
      int leng=0;
      int xxx =0;
      while ((leng= fis.read(ar))!=-1){
          System.out.println(new String(ar,0,leng));
      }
      for (int i = 0; i < ar.length; i++) {
          if ((char) ar[i]=='\n'){
              xxx++;
          }
      }
      System.out.println(xxx);
      long x2=instance.getTimeInMillis();
      System.out.println("需要:"+(x2-x1));
  }

  /*5：实现之前的超市(名称属性)会员积分系统,有如下的基本功能(实现开卡和查询即可)，会员有卡号和积分两个属性：
积分累计
积分兑换
查询剩余积分
修改密码
开卡
退出
,采用序列化的方式,每次启动如果没有超市对象,则创建新对象;否则从序列化的文件中读取,退出时保存所有数据。后续处理方式相同.*/
    public void _5(){

    }

    /*7：一个模板文件wuliu. template的内容如下：
您的运单号为{danhao}的快件已到达{weizhi},请根据提取码{tiquma}提取，感谢您的支持
请把上面{}内的内容（包括{})替换为具体的信息，将替换后的内容写入到 《物流.txt》中*/
    public void ss(String ...d) throws IOException {
        FileReader reader = new FileReader("C:\\Users\\董\\Documents\\java笔记\\wuliu.. template.txt");
        StringBuffer sb = new StringBuffer();
        char[] ar = new char[1024];
        int length = 0;
        while ((length = reader.read(ar)) != -1) {
            String s = new String(ar, 0, length);
            sb.append(s);
        }
        String a = sb+"\n";
        a = a.replace("{danhao}", d[0]).replace("{weizhi}",d[1]).replace("{tiquma}",d[2]);
        FileWriter fileWriter = new FileWriter("C:\\Users\\董\\Documents\\java笔记\\物流.txt",true);
        fileWriter.write(a);
        System.out.println("更改后:" + a);
        reader.close();
        fileWriter.close();
    }
}

